package com.qsw.refreshrecyclerview.RefreshRecyclerView.adapter;

import android.support.v7.widget.RecyclerView;

import java.util.List;

/**
 * 支持分批加载的RecyclerView适配器
 *
 * @param <T>  数据类型
 * @param <VH> ViewHolder类型
 */
public abstract class RefreshRecyclerViewAdapter<T, VH extends RecyclerView.ViewHolder> extends RecyclerView.Adapter<VH> {
    private List<T> mData;

    public RefreshRecyclerViewAdapter() {
    }

    public RefreshRecyclerViewAdapter(List<T> data) {
        setData(data);
    }

    /**
     * 设置数据源，将会清空之前的数据
     *
     * @param data 数据源
     */
    public void setData(List<T> data) {
        mData = data;
    }

    /**
     * 添加数据，将会续在之前的数据后边
     *
     * @param data 要添加的数据
     */
    public void addData(List<T> data) {
        mData.addAll(data);
    }

    /**
     * 获取数据
     *
     * @return 当前显示的数据
     */
    List<T> getData() {
        return mData;
    }

    @Override
    public int getItemCount() {
        return (mData == null) ? 0 : mData.size();
    }

    /**
     * 获取对应数据，若position小于0或超过数据量，则返回null
     *
     * @param position 索引
     * @return 对应数据或null
     */
    public T getItemBean(int position) {
        if (position < 0 || position >= getItemCount()) {
            return null;
        }
        return mData.get(position);
    }
}
